/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import entidades.Tecnico;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import params.EstadoPersona;
import params.TipoPersona;

/**
 *
 * @author RENZO
 */
public class PersonaDAO extends AbstractDAO {
    
    public static List<Tecnico> obtenerTecnicos() throws Exception{
        List<Tecnico> lista = new ArrayList<Tecnico>();
        PreparedStatement ps = null;
        Tecnico obj = null;
        try {
            ps = prepararConexionCall("SELECT * FROM PERSONA WHERE persona_tipo = "+TipoPersona.TECNICO+" AND persona_estado = "+EstadoPersona.HABILITADO);
            ResultSet rs = realizarConexionGET(ps);
            while(rs.next()){
                obj = new Tecnico();
                obj.setId(rs.getLong("persona_id"));
                obj.setNombre(rs.getString("persona_nombre"));
                obj.setaPaterno(rs.getString("persona_apaterno"));
                obj.setaMaterno(rs.getString("persona_amaterno"));
                obj.setDni(rs.getString("dni"));
                obj.setTelefono(rs.getString("telefono"));
                obj.setEmail(rs.getString("email"));
            }
        } catch (SQLException ex) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }finally{
            try {
                ps.close();
                dataAccess.closeConnection();
            } catch (SQLException ex) {
                Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return lista;
    }
    
    public static List<Tecnico> obtenerTecnicosByNombre(String nombre) throws Exception{
        List<Tecnico> lista = new ArrayList<Tecnico>();
        PreparedStatement ps = null;
        Tecnico obj = null;
        try {
            ps = prepararConexionCall("SELECT * FROM PERSONA WHERE (persona_nombre ILIKE '%"+nombre+"%' OR persona_apaterno ILIKE '%"+nombre+
                    "%' OR persona_amaterno ILIKE '%"+nombre+"%' ) AND persona_tipo = "+TipoPersona.TECNICO+" AND persona_estado = "+EstadoPersona.HABILITADO);
            ResultSet rs = realizarConexionGET(ps);
            while(rs.next()){
                obj = new Tecnico();
                obj.setId(rs.getLong("persona_id"));
                obj.setNombre(rs.getString("persona_nombre"));
                obj.setaPaterno(rs.getString("persona_apaterno"));
                obj.setaMaterno(rs.getString("persona_amaterno"));
                obj.setDni(rs.getString("persona_dni"));
                obj.setTelefono(rs.getString("persona_telefono"));
                obj.setEmail(rs.getString("persona_email"));
                lista.add(obj);
            }
        } catch (SQLException ex) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }finally{
            try {
                ps.close();
                dataAccess.closeConnection();
            } catch (SQLException ex) {
                Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return lista;
    }
}
